package de.homelabs.bookstore.persistence;

import java.util.List;

import de.homelabs.bookstore.domain.Autor;
import de.homelabs.bookstore.domain.Buch;

/**
 * Beschreibt die Methoden im Rahmen der Perstistenz von Buechern
 * 
 * @author d.mueller
 *
 */
public interface IBuchDAO {
	
	/**
	 * liefert alle Buecher
	 * @return List<Buch> - Liste aller Buecher
	 */
	List<Buch> holeAlleBuecher();
	
	/**
	 * Sucht ein Buch anhand seiner Id
	 *  
	 * @param int id - Id des buches
	 * @return Buch - Buch Objekt wenn gefunden, sonst NULL
	 */
	Buch sucheBuchNachId(int id);
	
	/**
	 * Sucht ein Buch anhand seiner ISBN
	 *  
	 * @param String isbn - ISBN des Buches
	 * @return Buch - Buch Objekt wenn gefunden, sonst NULL, ISBN sollte nur ein Buch liefern
	 */
	Buch sucheBuchNachISBN(String isbn);
	
	/**
	 * Sucht ein Buch anhand eine Titelvergleiches
	 * 
	 * @param String titel - der Titel des Buches
	 * @return List<Buch> - Liste mit gefundenen Buechern
	 */
	List<Buch> sucheBuchNachTitel(String titel);
	
	/**
	 * Sucht ein Buch anhand eines Autors
	 * 
	 * @param Autor autor - Autor des Buches
	 * @return List<Buch> - Liste mit gefundenen Buechern
	 */
	List<Buch> sucheBuchNachAutor(Autor autor);
	
	/**
	 * Speichert ein Buch
	 * 
	 * @param Buch buch - das Objekt welches gespeichert werden soll
	 * @return Buch buch - dsa um die Id erweiterte Buch wenn gespeichert, sonst null 
	 */
	Buch speichereBuch(Buch buch);
}
